//
// 邻接表
// Created by 麻再挺 on 2021/12/16.
//

#ifndef DATA_STRUCTURE_C_AL_GRAPH_H
#define DATA_STRUCTURE_C_AL_GRAPH_H

#include <stdio.h>
#include "graph_constant.h"

// 图结点
typedef struct ArcNode{
    // 邻接点在数组中的位置下标
    int adjVex;
    // 指向下一个邻接点的指针
    struct ArcNode *nextArc;
    // 弧或边额外含有的信息
    InfoType *info;
} ArcNode;

// 顶点信息
typedef struct VNode {
    // 顶点的数据域
    VertexType data;
    // 指向邻接点的指针
    ArcNode *firstArc;
} VNode, AdjList[MAX_VERTEX_NUM];// 存储个链表头结点的数据

// 图结构
typedef struct {
    // 图中各顶点数组
    AdjList vertices;
    // 记录图的顶点数和弧数
    int vexNum, arcNum;
    // 记录图的种类
    GraphKind kind;
} ALGraph;


#endif //DATA_STRUCTURE_C_AL_GRAPH_H
